// pages/message/message.js
var websocket = require('../../utils/websocket')
const app = getApp()
import Notify from '@vant/weapp/notify/notify';
import pinyin from "wl-pinyin"
Page({
	/**
	 * 页面的初始数据
	 */
	data: {
		user: {},
		messages: {},
		title: '联系人',
		//索引栏
		indexList: [],
		//存放字母对象  key为字母，value为字母对应的user数组
		friends: {},
		online: [],
		//设计一个暂存id，用户点击进入聊天，temp为好友的id，信息传递过来，如果fromid和temp一致，不进行存储（用户正在和好友聊天）,返回时注意给temp清除。
		temp: '',
    friendsDTO:{},
    loadModal:true
	},

	onShow() {
		this.getTabBar().init();
		this.getAllfriends()
	},
	onLoad() {
		var user = wx.getStorageSync('user')
		this.setData({
			user: user
		})
		if (this.data.user.id != undefined) {
			//建立连接
			websocket.ws_connect((message) => {
				//获取消息类型，1上线、2下线、3获取在线用户id、4用户发送的消息
				//存储消息到未读队列 
				//JSON转对象
				message = JSON.parse(message)
				if (message.messageType == 3) {
					this.setData({
						online: JSON.parse(message.message)
					})
				}
				if (message.messageType == 1) {
					Notify({
						type: 'primary',
						message: '好友上线提醒'
					})
					this.setData({
						online: this.data.online.concat(message.fromId)
					})
					console.log(message)
				}
				if (message.messageType == 2) {
					Notify({
						type: 'warning',
						message: '好友下线提醒'
					})
					var oldOnline = this.data.online
					//返回的是删除的元素
					var temp = oldOnline.splice(this.data.online.indexOf(message.fromId), 1)
					this.setData({
						online: oldOnline
					})
				}
				if (message.messageType == 4) {
					if(parseInt(message.fromId)!=this.data.temp){
					//存储消息的操作
					this.setData({
						['messages.' + message.fromId ]: this.data.messages[message.fromId] == undefined ? [message] : this.data.messages[message.fromId].concat(message)
					})
					Notify({
						type: 'primary',
						message: '您有新消息'
					})
					console.log(this.data.messages)
					}
				}
				if (message.messageType == 5) {
					//获取所有的未读消息，存入消息列表。
					var arr = message.messages
					var temp = this.data.messages
					for (var i = 0; i < message.size; i++) {
						var m = JSON.parse(arr[i])
						var id = m.fromId
						if (temp[id] == undefined) {
							temp[id] = [m]
						} else {
							temp[id] = temp[id].concat([m])
						}
					}
					this.setData({
						messages: temp
					})
					Notify({
						type: 'primary',
						message: '您有未读消息'
					})
				}
			}, this.data.user.id)
		} else {
			//提示登录并跳转到个人中心
		}

	},
	getAllfriends() {
		app.request({
			url: app.globalData.apiUrl + "/follow/friends",
			method: 'GET',
		}).then(res => {
			if (res.statusCode == 200) {
				var f = {}
				for (var i = 0; i < res.data.data.length; i++) {
					var s = pinyin.getFirstLetter(res.data.data[i].name)
					let temp = s[0]
					if (this.data.indexList.indexOf(temp) == -1) {
						this.data.indexList.concat(temp)
					}
					if (f[temp] == undefined) {
						f[temp] = [res.data.data[i]]
					} else {
						f[temp] = f[temp].concat(res.data.data[i])
					}
					this.setData({
						['friendsDTO.'+res.data.data[i].id]:res.data.data[i]
					})
				}
				this.setData({
					friends: f,
          indexList: Object.keys(f),
          loadModal:false
				})
			} else {
        this.setData({
          loadModal:false
        })
				Notify('服务错误，稍后重试');
			}
		})
	},
	onUnload() {},
	onClick(e) {
		this.setData({
			title: e.detail.title
		})
	},
	gotoChat(e) {
		//携带所有未读聊天记录,可以根据id直接获取
		var user = e.currentTarget.dataset.id;
		var friend = JSON.stringify(e.currentTarget.dataset.id)
		var messages = JSON.stringify(this.data.messages[user.id])
		var messagetemp=this.data.messages
		delete messagetemp[user.id]
		this.setData({
			temp:e.currentTarget.dataset.id.id,
			messages: messagetemp
		})
		wx.navigateTo({
			url: '/pages/message/chat/chat?id=' + friend + '&messages=' + messages,
		})
	},
	setTemp(){
		this.setData({
			temp:''
		})
	},
	gotoShow(e){
    console.log(e)
		wx.navigateTo({
			url: '/pages/show/show?id='+e.currentTarget.dataset.id,
		})
	}
})